home *** CD-ROM | disk | FTP | other *** search
/ Czech Logic, Card & Gambling Games / Logické hry.iso / hry / Fish Fillets / script / viking2 / code.lua next >
Encoding:
Text File  |  2005-07-16  |  30.7 KB  |  809 lines

  1.  
  2. -- -----------------------------------------------------------------
  3. -- Init
  4. -- -----------------------------------------------------------------
  5. local function prog_init()
  6.     initModels()
  7.     sound_playMusic("music/rybky05.ogg")
  8.     local pokus = getRestartCount()
  9.  
  10.  
  11.     -- -------------------------------------------------------------
  12.     local function prog_init_room()
  13.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  14.  
  15.         if pokus == 1 or random(100) < 40 then
  16.             room.quvod = random(10) + 10
  17.         else
  18.             room.quvod = -2
  19.         end
  20.         room.chechtoni = 0
  21.         room.chechthlaska = 0
  22.         room.moczbabelcu = 0
  23.         room.qvousy = 0
  24.         room.pravvousy = 70
  25.         room.qpejsek = 300 + random(600)
  26.         room.lastval = 0
  27.  
  28.         return function()
  29.             if not isReady(small) or not isReady(big) then
  30.                 room.quvod = -1
  31.                 room.qpejsek = -1
  32.             end
  33.             if room.quvod > 0 then
  34.                 room.quvod = room.quvod - 1
  35.             elseif room.quvod == 0 then
  36.                 room.quvod = -1
  37.                 addm(5, "dr1-m-dlouho")
  38.                 addv(5, "dr1-v-urcite")
  39.                 if random(4) > 0 then
  40.                     addv(30 + random(30), "dr1-v-olaf")
  41.                 end
  42.                 if random(4) > 0 then
  43.                     addv(30 + random(30), "dr1-v-leif")
  44.                 end
  45.                 if random(4) > 0 then
  46.                     addv(30 + random(30), "dr1-v-harold")
  47.                 end
  48.                 if random(4) > 0 then
  49.                     addv(30 + random(30), "dr1-v-snorr")
  50.                 end
  51.                 if random(4) > 0 then
  52.                     addv(30 + random(30), "dr1-v-thorson")
  53.                 end
  54.                 if random(6) > 0 then
  55.                     planDialogSet(50 + random(30), "dr1-x-erik", 116, hlavadr, "mluvi")
  56.                 end
  57.                 planSet(room, "quvod", -2)
  58.             elseif room.quvod == -2 then
  59.                 if viking7.dostal == -1 then
  60.                     viking7.dostal = 0
  61.                 end
  62.             end
  63.             if not pesos:isTalking() and room.qpejsek > 0 then
  64.                 room.qpejsek = room.qpejsek - 1
  65.             end
  66.             if room.quvod == -2 then
  67.                 if room.moczbabelcu == 1 then
  68.                     if no_dialog() then
  69.                         planDialogSet(2 + random(20), "dr-1-achjo", 210, viking1, "cinnost")
  70.                     end
  71.                     room.moczbabelcu = 0
  72.                 elseif room.chechtoni == 1 then
  73.                     if no_dialog() then
  74.                         room.chechthlaska = room.chechthlaska + 1
  75.                         switch(room.chechthlaska){
  76.                             [1] = function()
  77.                                 planDialogSet(5 + random(20), "dr-1-procja", 210, viking1, "cinnost")
  78.                             end,
  79.                             [2] = function()
  80.                                 planDialogSet(5 + random(20), "dr-1-chechtajici", 210, viking1, "cinnost")
  81.                             end,
  82.                         }
  83.                     end
  84.                     room.chechtoni = 0
  85.                 elseif no_dialog() then
  86.                     if random(1000) < 7 and viking5.cinnost == 0 then
  87.                         viking5.cinnost = 1
  88.                     elseif random(10000) < room.pravvousy then
  89.                         local qvousy_table = {
  90.                             [0] = function()
  91.                                 switch(random(2)){
  92.                                     [0] = function()
  93.                                         planDialogSet(10, "dr-3-spravny", 230, viking3, "cinnost")
  94.                                     end,
  95.                                     [1] = function()
  96.                                         planDialogSet(10, "dr-3-cojeto", 230, viking3, "cinnost")
  97.                                     end,
  98.                                 }
  99.                                 switch(random(2)){
  100.                                     [0] = function()
  101.                                         planDialogSet(6, "dr-4-magazin", 240, viking4, "cinnost")
  102.                                     end,
  103.                                     [1] = function()
  104.                                         planDialogSet(6, "dr-4-copy", 240, viking4, "cinnost")
  105.                                     end,
  106.                                 }
  107.                                 room.qvousy = 10
  108.                                 room.pravvousy = 50
  109.                             end,
  110.                             [10] = function()
  111.                                 repeat
  112.                                     pom1 = random(3) + 1
  113.                                 until pom1 ~= room.qvousy - 10
  114.                                 if room.qvousy == 10 then
  115.                                     room.qvousy = pom1 + 10
  116.                                 else
  117.                                     room.qvousy = 20
  118.                                 end
  119.                                 switch(pom1){
  120.                                     [1] = function()
  121.                                         planDialogSet(6, "dr-3-radeji", 230, viking3, "cinnost")
  122.                                         planDialogSet(3, "dr-4-moderni", 240, viking4, "cinnost")
  123.                                     end,
  124.                                     [2] = function()
  125.                                         planDialogSet(6, "dr-4-myslis", 240, viking4, "cinnost")
  126.                                         planDialogSet(0, "dr-3-samozrejme", 230, viking3, "cinnost")
  127.                                         planDialogSet(10, "dr-4-budu", 240, viking4, "cinnost")
  128.                                         planDialogSet(5, "dr-4-hmmm", 241, viking4, "cinnost")
  129.                                         planDialogSet(2, "dr-4-ne", 240, viking4, "cinnost")
  130.                                     end,
  131.                                     [3] = function()
  132.                                         planDialogSet(6, "dr-4-erik", 240, viking4, "cinnost")
  133.                                         planDialogSet(0, "dr-3-nesmysl", 230, viking3, "cinnost")
  134.                                         planDialogSet(0, "dr-4-taky", 240, viking4, "cinnost")
  135.                                         planDialogSet(0, "dr-3-nemel", 230, viking3, "cinnost")
  136.                                     end,
  137.                                 }
  138.                                 room.pravvousy = 40
  139.                             end,
  140.                             [20] = function()
  141.                                 room.pravvousy = room.pravvousy - 5
  142.                                 switch(random(4)){
  143.                                     [0] = function()
  144.                                         planDialogSet(10, "dr-3-mladez", 230, viking3, "cinnost")
  145.                                     end,
  146.                                     [1] = function()
  147.                                         planDialogSet(10, "dr-3-chlap", 230, viking3, "cinnost")
  148.                                     end,
  149.                                     [2] = function()
  150.                                         planDialogSet(10, "dr-3-mladi", 230, viking3, "cinnost")
  151.                                     end,
  152.                                     [3] = function()
  153.                                         planDialogSet(10, "dr-4-stejne", 240, viking4, "cinnost")
  154.                                     end,
  155.                                 }
  156.                             end,
  157.                         }
  158.  
  159.                         qvousy_table[11] = qvousy_table[10]
  160.                         qvousy_table[12] = qvousy_table[10]
  161.                         qvousy_table[13] = qvousy_table[10]
  162.  
  163.                         switch(room.qvousy)(qvousy_table)
  164.                     elseif random(1000) < 4 then
  165.                         pom1 = random(3) + 1
  166.                         if pom1 == room.lastval then
  167.                             pom1 = 4
  168.                         end
  169.                         room.lastval = pom1
  170.                         switch(pom1){
  171.                             [1] = function()
  172.                                 planSet(viking2, "cinnost", -1)
  173.                                 viking2:planDialog(5, "dr-2-uzbudeme"..(random(2) + 1))
  174.                                 planDialogSet(3, "dr-1-aztambudem", 210, viking1, "cinnost")
  175.                             end,
  176.                             [2] = function()
  177.                                 planSet(viking2, "cinnost", -1)
  178.                                 viking2:planDialog(5, "dr-2-odskocit")
  179.                                 planDialogSet(3, "dr-1-pockej", 210, viking1, "cinnost")
  180.                             end,
  181.                             [3] = function()
  182.                                 planSet(viking2, "cinnost", -1)
  183.                                 viking2:planDialog(5, "dr-2-netrva")
  184.                                 planDialogSet(3, "dr-1-trpelivost", 210, viking1, "cinnost")
  185.                             end,
  186.                             [4] = function()
  187.                                 planSet(viking2, "cinnost", -1)
  188.                                 viking2:planDialog(5, "dr-2-urcite")
  189.                                 planDialogSet(3, "dr-1-bojovnik", 210, viking1, "cinnost")
  190.                             end,
  191.                         }
  192.                     elseif room.qpejsek == 0 and pesos:isTalking() then
  193.                         room.qpejsek = -1
  194.                         addm(10 + random(30), "dr-m-podivej")
  195.                         pom1 = random(2)
  196.                         if pom1 == 0 or random(2) == 0 then
  197.                             addm(3, "dr-m-nedycha")
  198.                         end
  199.                         switch(pom1){
  200.                             [0] = function()
  201.                                 addv(6, "dr-v-napsa")
  202.                             end,
  203.                             [1] = function()
  204.                                 addv(7, "dr-v-nato")
  205.                             end,
  206.                         }
  207.                     end
  208.                 end
  209.             end
  210.         end
  211.     end
  212.  
  213.     -- -------------------------------------------------------------
  214.     local function prog_init_viking1()
  215.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  216.  
  217.         viking1.cinnost = 0
  218.  
  219.         return function()
  220.             switch(viking1.cinnost){
  221.                 [0] = function()
  222.                     if random(100) < 5 then
  223.                         viking1.afaze = random(3)
  224.                     end
  225.                 end,
  226.                 [210] = function()
  227.                     viking1.afaze = random(3)
  228.                 end,
  229.             }
  230.             viking1:updateAnim()
  231.         end
  232.     end
  233.  
  234.     -- -------------------------------------------------------------
  235.     local function prog_init_viking3()
  236.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  237.  
  238.         viking3.cinnost = 0
  239.  
  240.         return function()
  241.             switch(viking3.cinnost){
  242.                 [0] = function()
  243.                     viking3.afaze = 0
  244.                 end,
  245.                 [230] = function()
  246.                     viking3.afaze = random(2) * 2
  247.                 end,
  248.             }
  249.             if random(100) < 5 then
  250.                 viking3.afaze = viking3.afaze + 1
  251.             end
  252.             viking3:updateAnim()
  253.         end
  254.     end
  255.  
  256.     -- -------------------------------------------------------------
  257.     local function prog_init_viking4()
  258.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  259.  
  260.         viking4.cinnost = 0
  261.  
  262.         return function()
  263.             switch(viking4.cinnost){
  264.                 [0] = function()
  265.                     viking4.afaze = 0
  266.                 end,
  267.                 [240] = function()
  268.                     if odd(game_getCycles()) then
  269.                         viking4.afaze = math.floor(viking4.afaze / 2)
  270.                         if viking4.afaze == 0 or viking4.afaze == 1 then
  271.                                 if random(100) < 20 then
  272.                                     viking4.afaze = 2 + random(2)
  273.                                 else
  274.                                     viking4.afaze = 1 - viking4.afaze
  275.                                 end
  276.                         elseif viking4.afaze == 2 or viking4.afaze == 3 then
  277.                                 if random(100) < 35 then
  278.                                     viking4.afaze = random(2)
  279.                                 else
  280.                                     viking4.afaze = 5 - viking4.afaze
  281.                                 end
  282.                         end
  283.                         viking4.afaze = viking4.afaze + viking4.afaze
  284.                     end
  285.                 end,
  286.                 [241] = function()
  287.                     viking4.afaze = 6
  288.                 end,
  289.             }
  290.             if random(100) < 5 then
  291.                 viking4.afaze = viking4.afaze + 1
  292.             end
  293.             viking4:updateAnim()
  294.         end
  295.     end
  296.  
  297.     -- -------------------------------------------------------------
  298.     local function prog_init_viking5()
  299.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  300.  
  301.         viking5.cinnost = 0
  302.         viking5.poslhlaska = 0
  303.         viking5.pochlasek = 0
  304.  
  305.         return function()
  306.             switch(viking5.cinnost){
  307.                 [0] = function()
  308.                     viking5.faze = 0
  309.                     if random(1000) < 3 then
  310.                         viking5.cinnost = 2
  311.                     end
  312.                 end,
  313.                 [1] = function()
  314.                     switch(viking5.faze){
  315.                         [0] = function()
  316.                             viking5.afaze = 4
  317.                             pom1 = random(4) + 1
  318.                             if pom1 == viking5.poslhlaska then
  319.                                 pom1 = 5
  320.                             end
  321.                             viking5:planDialog(0, "dr-5-srab"..pom1)
  322.                             viking5.poslhlaska = pom1
  323.                             viking5.faze = viking5.faze + 1
  324.                             viking5.pochlasek = viking5.pochlasek + 1
  325.                         end,
  326.                         [1] = function()
  327.                             if viking5:isTalking() then
  328.                                 viking5.afaze = 2 + random(2) * 2
  329.                                 if viking5.afaze == 2 then
  330.                                     if random(100) < 20 then
  331.                                         viking5.afaze = viking5.afaze - 1 + 2 * random(2)
  332.                                     end
  333.                                 end
  334.                             else
  335.                                 viking5.faze = viking5.faze + 1
  336.                             end
  337.                         end,
  338.                         [2] = function()
  339.                             if isIn(viking5.pochlasek, {3, 8, 15, 20, 30, 50}) then
  340.                                 room.moczbabelcu = 1
  341.                             end
  342.                             viking5.cinnost = 2
  343.                             viking5.faze = 0
  344.                         end,
  345.                     }
  346.                 end,
  347.                 [2] = function()
  348.                     switch(viking5.faze){
  349.                         [0] = function()
  350.                             viking5.delay = random(5) + 10
  351.                             viking5.faze = viking5.faze + 1
  352.                         end,
  353.                         [1] = function()
  354.                             if viking5.afaze == 3 then
  355.                                 if random(2) == 0 then
  356.                                     viking5.afaze = 2
  357.                                 else
  358.                                 end
  359.                             elseif random(100) < 10 then
  360.                                 if random(2) == 0 then
  361.                                     viking5.afaze = 3
  362.                                 else
  363.                                     viking5.afaze = 1
  364.                                 end
  365.                             else
  366.                                 viking5.afaze = 2
  367.                             end
  368.                             if viking5.delay == 0 then
  369.                                 viking5.faze = 2
  370.                             else
  371.                                 viking5.delay = viking5.delay - 1
  372.                             end
  373.                         end,
  374.                         [2] = function()
  375.                             viking5.afaze = 0
  376.                             viking5.cinnost = 0
  377.                         end,
  378.                     }
  379.                 end,
  380.             }
  381.             viking5:updateAnim()
  382.         end
  383.     end
  384.  
  385.     -- -------------------------------------------------------------
  386.     local function prog_init_viking6()
  387.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  388.  
  389.         viking6.smich = 0
  390.  
  391.         return function()
  392.             switch(viking6.smich){
  393.                 [0] = function()
  394.                     if random(100) < 5 then
  395.                         viking6.afaze = 1
  396.                     else
  397.                         viking6.afaze = 0
  398.                     end
  399.                 end,
  400.                 [1] = function()
  401.                     game_killPlan()
  402.                     viking6:planDialog(0, "dr-6-checheche")
  403.                     viking6.smich = viking6.smich + 1
  404.                 end,
  405.                 [2] = function()
  406.                     if viking6:isTalking() then
  407.                         if viking6.afaze == 2 then
  408.                             viking6.afaze = 3
  409.                         else
  410.                             viking6.afaze = 2
  411.                         end
  412.                     else
  413.                         viking6.afaze = 0
  414.                         viking6.smich = 0
  415.                         room.chechtoni = 1
  416.                     end
  417.                 end,
  418.             }
  419.             viking6:updateAnim()
  420.         end
  421.     end
  422.  
  423.     -- -------------------------------------------------------------
  424.     local function prog_init_viking7()
  425.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  426.  
  427.         viking7.dostal = -1
  428.         viking7.afaze = 1
  429.  
  430.         return function()
  431.             switch(viking7.dostal){
  432.                 [0] = function()
  433.                     if viking7:isTalking() then
  434.                         if viking7.afaze == 1 then
  435.                             viking7.afaze = 2
  436.                         else
  437.                             viking7.afaze = 1
  438.                         end
  439.                     else
  440.                         viking7.afaze = 1
  441.                         if random(100) < 10 then
  442.                             viking7:talk("dr-7-sm"..(random(8) + 1), VOLUME_FULL)
  443.                         end
  444.                     end
  445.                 end,
  446.                 [1] = function()
  447.                     viking7.dostal = viking7.dostal + 1
  448.                     viking7.afaze = 0
  449.                 end,
  450.                 [2] = function()
  451.                     viking7.dostal = viking7.dostal + 1
  452.                     viking7.afaze = 0
  453.                 end,
  454.                 [3] = function()
  455.                     viking7.dostal = viking7.dostal + 1
  456.                     viking7.afaze = 0
  457.                 end,
  458.                 [4] = function()
  459.                     viking7.otrne = random(1200) + 600
  460.                     viking7.dostal = viking7.dostal + 1
  461.                     viking6.smich = 1
  462.                 end,
  463.                 [5] = function()
  464.                     if viking7.otrne > 0 then
  465.                         viking7.otrne = viking7.otrne - 1
  466.                     end
  467.                     if model_isTalking(271) then
  468.                         viking7.afaze = random(2) * 2 + 3
  469.                         if random(100) < 7 then
  470.                             viking7.afaze = viking7.afaze + 1
  471.                         end
  472.                     else
  473.                         viking7.afaze = 3
  474.                         if random(100) < 7 then
  475.                             viking7.afaze = viking7.afaze + 1
  476.                         end
  477.                         if viking7.otrne == 0 then
  478.                             viking7.dostal = 0
  479.                         elseif random(100) < 3 then
  480.                             model_talk(271, "dr-7-brble"..(random(5) + 1), VOLUME_FULL)
  481.                         end
  482.                     end
  483.                 end,
  484.             }
  485.             viking7:updateAnim()
  486.         end
  487.     end
  488.  
  489.     -- -------------------------------------------------------------
  490.     local function prog_init_viking8()
  491.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  492.  
  493.         viking8.nervozita = 0
  494.         viking8.cinnost = 0
  495.  
  496.         return function()
  497.             if viking8.nervozita == 0 then
  498.                 viking8.nervozita = 1
  499.                 viking8.mira1 = random(200) + 200
  500.                 viking8.mira2 = viking8.mira1 + random(150) + 150
  501.                 viking8.mira0 = random(viking8.mira1 - 80) + 90
  502.             end
  503.             if viking7:isTalking() then
  504.                 viking8.nervozita = viking8.nervozita + 1
  505.             end
  506.             switch(viking8.cinnost){
  507.                 [0] = function()
  508.                     if viking8.nervozita == viking8.mira1 then
  509.                         viking8.nervozita = viking8.nervozita + 1
  510.                         if no_dialog() then
  511.                             viking8.cinnost = 10
  512.                         else
  513.                             viking8.nervozita = viking8.nervozita - 20
  514.                         end
  515.                     elseif viking8.nervozita == viking8.mira2 then
  516.                         viking8.nervozita = viking8.nervozita + 1
  517.                         if no_dialog() then
  518.                             viking8.cinnost = 20
  519.                         else
  520.                             viking8.nervozita = viking8.nervozita - 20
  521.                         end
  522.                     elseif viking8.nervozita == viking8.mira0 then
  523.                         viking8.nervozita = viking8.nervozita + 1
  524.                         viking8.cinnost = 5
  525.                     end
  526.                 end,
  527.                 [5] = function()
  528.                     viking8.afaze = 3
  529.                     viking8.delay = 5
  530.                     viking8.cinnost = viking8.cinnost + 1
  531.                 end,
  532.                 [6] = function()
  533.                     if viking8.delay > 0 then
  534.                         viking8.delay = viking8.delay - 1
  535.                     else
  536.                         viking8.cinnost = viking8.cinnost + 1
  537.                     end
  538.                 end,
  539.                 [7] = function()
  540.                     viking8.cinnost = 0
  541.                     viking8.afaze = 0
  542.                 end,
  543.                 [10] = function()
  544.                     viking8.afaze = 3
  545.                     viking8:talk("dr-8-ztichni"..(random(2) + 1))
  546.                     viking8.cinnost = viking8.cinnost + 1
  547.                 end,
  548.                 [11] = function()
  549.                     if viking8:isTalking() then
  550.                         viking8.afaze = random(3) + 3
  551.                     else
  552.                         viking8.afaze = 0
  553.                         viking8.cinnost = 0
  554.                     end
  555.                 end,
  556.                 [20] = function()
  557.                     viking8.afaze = 3
  558.                     viking8:talk("dr-8-nenechas")
  559.                     viking8.cinnost = viking8.cinnost + 1
  560.                 end,
  561.                 [21] = function()
  562.                     if viking8:isTalking() then
  563.                         viking8.afaze = random(3) + 3
  564.                     else
  565.                         viking8.cinnost = viking8.cinnost + 1
  566.                         viking8.delay = 20
  567.                     end
  568.                 end,
  569.                 [22] = function()
  570.                     viking8.afaze = 1
  571.                     viking8:talk("dr-8-aaa")
  572.                     viking8.cinnost = viking8.cinnost + 1
  573.                     viking8.delay = 9
  574.                 end,
  575.                 [23] = function()
  576.                     if viking8.delay == 0 then
  577.                         viking8.cinnost = viking8.cinnost + 1
  578.                     else
  579.                         viking8.delay = viking8.delay - 1
  580.                     end
  581.                 end,
  582.                 [24] = function()
  583.                     viking8.afaze = 2
  584.                     model_talk(281, "dr-x-buch", VOLUME_FULL)
  585.                     viking7.dostal = 1
  586.                     viking8.nervozita = 0
  587.                     viking8.cinnost = viking8.cinnost + 1
  588.                     viking8.delay = 4
  589.                 end,
  590.                 [25] = function()
  591.                     if viking8.delay == 0 then
  592.                         viking8.afaze = 1
  593.                         viking8.cinnost = viking8.cinnost + 1
  594.                         viking8.delay = 3
  595.                     else
  596.                         viking8.delay = viking8.delay - 1
  597.                     end
  598.                 end,
  599.                 [26] = function()
  600.                     if viking8.delay == 0 then
  601.                         viking8.afaze = 0
  602.                         viking8.cinnost = 0
  603.                         viking8.delay = 3
  604.                     else
  605.                         viking8.delay = viking8.delay - 1
  606.                     end
  607.                 end,
  608.             }
  609.             viking8:updateAnim()
  610.         end
  611.     end
  612.  
  613.     -- -------------------------------------------------------------
  614.     local function prog_init_pesos()
  615.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  616.  
  617.         pesos.cinnost = 0
  618.  
  619.         return function()
  620.             switch(pesos.cinnost){
  621.                 [0] = function()
  622.                     pesos.afaze = 2
  623.                     pesos.cinnost = 1
  624.                     pesos.delay = random(100) + 50
  625.                 end,
  626.                 [1] = function()
  627.                     if pesos.delay == 0 then
  628.                         pesos.cinnost = pesos.cinnost + 1
  629.                     else
  630.                         pesos.delay = pesos.delay - 1
  631.                     end
  632.                 end,
  633.                 [2] = function()
  634.                     pesos:talk("dr-x-pes", VOLUME_FULL, -1)
  635.                     pesos.delay = random(100) + 20
  636.                     pesos.cinnost = pesos.cinnost + 1
  637.                 end,
  638.                 [3] = function()
  639.                     if pesos.delay == 0 then
  640.                         pesos:killSound()
  641.                         pesos.cinnost = 0
  642.                     else
  643.                         if pesos.afaze == 0 then
  644.                             pesos.afaze = 1
  645.                         else
  646.                             pesos.afaze = 0
  647.                         end
  648.                         pesos.delay = pesos.delay - 1
  649.                     end
  650.                 end,
  651.             }
  652.             pesos:updateAnim()
  653.         end
  654.     end
  655.  
  656.     -- -------------------------------------------------------------
  657.     local function prog_init_viking2()
  658.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  659.  
  660.         viking2.cinnost = 0
  661.  
  662.         return function()
  663.             switch(viking2.cinnost){
  664.                 [0] = function()
  665.                     viking2.faze = 0
  666.                     if random(1000) < 3 then
  667.                         viking2.cinnost = 2
  668.                     end
  669.                 end,
  670.                 [-1] = function()
  671.                     viking2.afaze = 2
  672.                     if viking2:isTalking() then
  673.                         viking2.cinnost = 1
  674.                     end
  675.                 end,
  676.                 [1] = function()
  677.                     if viking2:isTalking() then
  678.                         viking2.afaze = 2 + random(2) * 2
  679.                         if viking2.afaze == 2 then
  680.                             if random(100) < 7 then
  681.                                 viking2.afaze = viking2.afaze - 1 + 2 * random(2)
  682.                             end
  683.                         end
  684.                     else
  685.                         viking2.faze = 0
  686.                         viking2.cinnost = viking2.cinnost + 1
  687.                     end
  688.                 end,
  689.                 [2] = function()
  690.                     switch(viking2.faze){
  691.                         [0] = function()
  692.                             viking2.delay = random(5) + 10
  693.                             viking2.faze = viking2.faze + 1
  694.                         end,
  695.                         [1] = function()
  696.                             if viking2.afaze == 3 then
  697.                                 if random(2) == 0 then
  698.                                     viking2.afaze = 2
  699.                                 else
  700.                                 end
  701.                             elseif random(100) < 7 then
  702.                                 if random(2) == 0 then
  703.                                     viking2.afaze = 3
  704.                                 else
  705.                                     viking2.afaze = 1
  706.                                 end
  707.                             else
  708.                                 viking2.afaze = 2
  709.                             end
  710.                             if viking2.delay == 0 then
  711.                                 viking2.faze = 2
  712.                             else
  713.                                 viking2.delay = viking2.delay - 1
  714.                             end
  715.                         end,
  716.                         [2] = function()
  717.                             viking2.afaze = 0
  718.                             viking2.cinnost = 0
  719.                         end,
  720.                     }
  721.                 end,
  722.             }
  723.             viking2:updateAnim()
  724.         end
  725.     end
  726.  
  727.     -- -------------------------------------------------------------
  728.     local function prog_init_hlavadr()
  729.         local pom1, pom2, pomb1, pomb2 = 0, 0, false, false
  730.  
  731.         hlavadr.mluvi = 0
  732.  
  733.         return function()
  734.             if math.mod(game_getCycles(), 3) == 1 then
  735.                 if hlavadr.mluvi ~= 0 then
  736.                     pom1 = hlavadr.afaze
  737.                     repeat
  738.                         hlavadr.afaze = random(3)
  739.                     until hlavadr.afaze ~= pom1
  740.                 else
  741.                     hlavadr.afaze = 0
  742.                 end
  743.             end
  744.             hlavadr:updateAnim()
  745.         end
  746.     end
  747.  
  748.     -- --------------------
  749.     local update_table = {}
  750.     local subinit
  751.     subinit = prog_init_room()
  752.     if subinit then
  753.         table.insert(update_table, subinit)
  754.     end
  755.     subinit = prog_init_viking1()
  756.     if subinit then
  757.         table.insert(update_table, subinit)
  758.     end
  759.     subinit = prog_init_viking3()
  760.     if subinit then
  761.         table.insert(update_table, subinit)
  762.     end
  763.     subinit = prog_init_viking4()
  764.     if subinit then
  765.         table.insert(update_table, subinit)
  766.     end
  767.     subinit = prog_init_viking5()
  768.     if subinit then
  769.         table.insert(update_table, subinit)
  770.     end
  771.     subinit = prog_init_viking6()
  772.     if subinit then
  773.         table.insert(update_table, subinit)
  774.     end
  775.     subinit = prog_init_viking7()
  776.     if subinit then
  777.         table.insert(update_table, subinit)
  778.     end
  779.     subinit = prog_init_viking8()
  780.     if subinit then
  781.         table.insert(update_table, subinit)
  782.     end
  783.     subinit = prog_init_pesos()
  784.     if subinit then
  785.         table.insert(update_table, subinit)
  786.     end
  787.     subinit = prog_init_viking2()
  788.     if subinit then
  789.         table.insert(update_table, subinit)
  790.     end
  791.     subinit = prog_init_hlavadr()
  792.     if subinit then
  793.         table.insert(update_table, subinit)
  794.     end
  795.     return update_table
  796. end
  797. local update_table = prog_init()
  798.  
  799.  
  800. -- -----------------------------------------------------------------
  801. -- Update
  802. -- -----------------------------------------------------------------
  803. function prog_update()
  804.     for key, subupdate in pairs(update_table) do
  805.         subupdate()
  806.     end
  807. end
  808.  
  809.